//
//  WCAppController.h
//  WabbitCode
//
//  Created by William Towe on 1/21/09.
//  Copyright 2009 Revolution Software. All rights reserved.
//

#import <Cocoa/Cocoa.h>


typedef enum _WCPGWhenApplicationLaunches {
	WCPGWhenApplicationLaunchesShowNewProjectWindow,
	WCPGWhenApplicationLaunchesOpenMostRecentProject,
	WCPGWhenApplicationLaunchesDoNothing
	
} WCPGWhenApplicationLaunches;
extern NSString *kWCPrefsGeneralWhenApplicationLaunchesKey;

extern NSString *kWCPrefsAppearanceConsoleFontKey;

typedef enum _WCPBPlaceBuildProductsIn {
	WCPBPlaceBuildProductsInProjectDirectory,
	WCPBPlaceBuildProductsInCustomDirectory
	
} WCPBPlaceBuildProductsIn;
extern NSString *kWCPrefsBuildingPlaceBuildProductsInKey;

extern NSString *kWCPrefsBuildingProductsCustomDirectoryKey;
typedef enum _WCPBBuildResultsWindowOpenDuringBuilds {
	WCPBBuildResultsWindowOpenDuringBuildsAlways,
	WCPBBuildResultsWindowOpenDuringBuildsNever
	
} WCPBBuildResultsWindowOpenDuringBuilds;
extern NSString *kWCPrefsBuildingBuildResultsWindowOpenDuringBuilds;

typedef enum _WCPBBuildResultsWindowCloseAfterBuilds {
	WCPBBuildResultsWindowCloseAfterBuildsNever,
	WCPBBuildResultsWindowCloseAfterBuildsAlways,
	WCPBBuildResultsWindowCloseAfterBuildsOnNoErrors,
	WCPBBuildResultsWindowCloseAfterBuildsOnNoErrorsOrWarnings
	
} WCPBBuildResultsWindowCloseAfterBuilds;
extern NSString *kWCPrefsBuildingBuildResultsWindowCloseAfterBuilds;
typedef enum _WCPBErrorsAndWarningsGroupOpenDuringBuilds {
	WCPBErrorsAndWarningsGroupOpenDuringBuildsAlways,
	WCPBErrorsAndWarningsGroupOpenDuringBuildsNever
	
} WCPBErrorsAndWarningsGroupOpenDuringBuilds;
extern NSString *kWCPrefsBuildingErrorsAndWarningsGroupOpenDuringBuildsKey;
typedef enum _WCPBErrorsAndWarningsGroupCloseAfterBuilds {
	WCPBErrorsAndWarningsGroupCloseAfterBuildsAlways,
	WCPBErrorsAndWarningsGroupCloseAfterBuildsNever,
	WCPBErrorsAndWarningsGroupCloseAfterBuildsOnNoErrors,
	WCPBErrorsAndWarningsGroupCloseAfterBuildsOnNoErrorsOrWarnings
	
} WCPBErrorsAndWarningsGroupCloseAfterBuilds;
extern NSString *kWCPrefsBuildingErrorsAndWarningsGroupCloseAfterBuildsKey;
typedef enum _WCPBForUnsavedFiles {
	WCPBForUnsavedFilesAskBeforeBuilding,
	WCPBForUnsavedFilesAlwaysSave,
	WCPBForUnsavedFilesNeverSave,
	WCPBForUnsavedFilesCancelBuild
	
} WCPBForUnsavedFiles;
extern NSString *kWCPrefsBuildingForUnsavedFilesKey;

extern NSString *kWCPrefsBuildingDisplayErrorAndWarningInTheDockKey;

typedef enum _WCPEGotoLineOrCharacter {
	WCPEGotoLineOrCharacterGotoLine,
	WCPEGotoLineOrCharacterGotoCharacter
	
} WCPEGotoLineOrCharacter;

extern NSString *kWCPrefsEditorDefaultFileEncodingKey;
extern NSString *kWCPrefsEditorDefaultShowInvisibleCharactersKey;
extern NSString *kWCPrefsEditorDefaultWrapLinesKey;
extern NSString *kWCPrefsEditorDefaultShowGutterKey;
extern NSString *kWCPrefsEditorDefaultShowLineNumbersKey;
extern NSString *kWCPrefsEditorDefaultShowErrorsKey;
extern NSString *kWCPrefsEditorDefaultShowWarningsKey;
extern NSString *kWCPrefsEditorDefaultAutomaticallyIndentNewLinesKey;
extern NSString *kWCPrefsEditorDefaultAutomaticallyInsertAClosingParenthesisKey;

extern NSString *kWCPrefsEditorTabWidthKey;

extern NSString *kWCPrefsEditorSelectedTabViewIdentifierKey;
// syntax highlighting
extern NSString *kWCPrefsEditorGotoLineOrCharacter;

extern NSString *kWCPrefsEditorFontKey;
extern NSString *kWCPrefsEditorTextColorKey;
extern NSString *kWCPrefsEditorBackgroundColorKey;
extern NSString *kWCPrefsEditorInvisibleCharacterColorKey;

extern NSString *kWCPrefsEditorLineHighlightEnabledKey;
extern NSString *kWCPrefsEditorLineHighlightColorKey;
extern NSString *kWCPrefsEditorSyntaxHighlightingEnabledKey;
extern NSString *kWCPrefsEditorDirectivesEnabledKey;
extern NSString *kWCPrefsEditorDirectivesColorKey;
extern NSString *kWCPrefsEditorConditionalRegistersEnabledKey;
extern NSString *kWCPrefsEditorConditionalRegistersColorKey;
extern NSString *kWCPrefsEditorOperationalCodesEnabledKey;
extern NSString *kWCPrefsEditorOperationalCodesColorKey;
extern NSString *kWCPrefsEditorOtherRegistersEnabledKey;
extern NSString *kWCPrefsEditorOtherRegistersColorKey;
extern NSString *kWCPrefsEditorLabelsEnabledKey;
extern NSString *kWCPrefsEditorLabelsColorKey;
extern NSString *kWCPrefsEditorEquatesEnabledKey;
extern NSString *kWCPrefsEditorEquatesColorKey;
extern NSString *kWCPrefsEditorPreProcessorCommandsEnabledKey;
extern NSString *kWCPrefsEditorPreProcessorCommandsColorKey;
extern NSString *kWCPrefsEditorStringsEnabledKey;
extern NSString *kWCPrefsEditorStringsColorKey;
extern NSString *kWCPrefsEditorBaseTenNumbersEnabledKey;
extern NSString *kWCPrefsEditorBaseTenNumbersColorKey;
extern NSString *kWCPrefsEditorBaseSixteenNumbersEnabledKey;
extern NSString *kWCPrefsEditorBaseSixteenNumbersColorKey;
extern NSString *kWCPrefsEditorBaseTwoNumbersEnabledKey;
extern NSString *kWCPrefsEditorBaseTwoNumbersColorKey;
extern NSString *kWCPrefsEditorCommentsEnabledKey;
extern NSString *kWCPrefsEditorCommentsColorKey; 

extern NSString *kWCPrefsFilesCheckIfFilesHaveBeenUpdatedByAnotherApplicationKey;
extern NSString *kWCPrefsFilesAutomaticallyUpdateChangedFilesKey;

extern NSString *kWCPrefsTabsAnimateAddingAndRemovingKey;
extern NSString *kWCPrefsTabsAllowScrubbingOfTabsKey;
extern NSString *kWCPrefsTabsOpenNewTabsInBackgroundKey;

extern NSString *kWCPrefsAddToProjectCopyFilesKey;
extern NSString *kWCPrefsAddToProjectTextEncodingKey;
extern NSString *kWCPrefsAddToProjectOpenFilesAfterAddKey;

extern NSString *kWCPrefsNewFileOpenNewFileAfterCreationKey;

extern NSString *kWCPrefsNewTargetMakeNewTargetActiveKey;
extern NSString *kWCPrefsNewTargetCopyActiveTargetsBuildStepsToNewTargetKey;

extern NSString *kWCPrefsNewConfigurationCopyActiveConfigurationsDefinesToNewConfigurationKey;
extern NSString *kWCPrefsNewConfigurationCopyActiveConfigurationsIncludeDirectoriesToNewConfigurationKey;

extern NSString *kWCPrefsNewIncludeDirectoryRecursivelyAddSubdirectoriesKey;

extern NSString *kWCNewProjectFromFolderRootFolderKey;
extern NSString *kWCNewProjectFromFolderTargetModelKey;
extern NSString *kWCNewProjectFromFolderTargetOutputTypeKey;

extern NSString *kWCProjectUTI;
extern NSString *kWCAssemblyUTI;
extern NSString *kWCIncludeUTI;

extern NSString *kWCProjectDataFileName;
extern NSString *kWCProjectDataFileExtension;
extern NSString *kWCProjectPreferencesFileExtension;
extern NSString *kWCProjectFileExtension;

extern NSStringEncoding kWCDefaultFileEncoding;

extern NSSet *kWCDocumentFileExtensions;

@interface WCAppController : NSObject {

}

+ (WCAppController *)sharedInstance;

- (IBAction)preferencesAction:(id)sender;
@end
